package com.ruoyi.system.utils;

import org.jxls.common.Context;
import org.jxls.util.JxlsHelper;
import org.jxls.util.Util;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

public class Print {
    /**
     * 打印方法  不插入图片
     * @throws Exception
     */
    public static void print() {
        //准备数据
        List<Student> list = new ArrayList<Student>();
        for (int i = 0; i < 20; i++) {
            Student stu = new Student();
            stu.setAge(i);
            stu.setClassName("一年级");
            stu.setName("张三" + i);
            stu.setSex("男");
            list.add(stu);
        }
        //获取模板文件，你自己当前模板的位置  我这里为当前项目下
        //如果为系统路径 为： InputStream is = new FileInputStream("F://student.xlsx");
        InputStream is = null;
        try{
        is = new FileInputStream("student1.xlsx");
        }catch(Exception e ){
            e.printStackTrace();
        }
        //根据模板生成的文件保存路径  我这里保存在本地D盘
        OutputStream os = null;
        try{
        os = new FileOutputStream("student.xlsx");
        }catch(Exception e){
            e.printStackTrace();
        }
        //绑定数据
        Context context = new Context();
        context.putVar("title", "学上统计表");
        context.putVar("list", list);
        //生成
        try{
            JxlsHelper.getInstance().processTemplate(is, os, context);
        }catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 打印方法  不插入图片
     *
     * 模板文件为student1.xlsx
     * 注意事项：模板文件新加入了一行，所以整体范围也就有所改变，大家注意一下批注中的结束范围
     * 图片所占用的范围为B2到C2
     *
     *
     * @throws Exception
     */
    public static void print1() throws Exception {
        //准备数据
        List<Student> list = new ArrayList<Student>();
        for (int i = 0; i < 20; i++) {
            Student stu = new Student();
            stu.setAge(i);
            stu.setClassName("一年级");
            stu.setName("张三" + i);
            stu.setSex("男");
            list.add(stu);
        }
        //获取模板文件，你自己当前模板的位置  我这里为当前项目下
        //如果为系统路径 为： InputStream is = new FileInputStream("F://student.xlsx");
        InputStream is = Print.class.getClassLoader().getResourceAsStream("student1.xlsx");
        //根据模板生成的文件保存路径  我这里保存在本地D盘
        OutputStream os = new FileOutputStream("student1.xlsx");

        //图片路径
        InputStream imageInputStream =Print.class.getClassLoader().getResourceAsStream("a.png");
        //转为字节码，插入的图片只能是字节码格式
        byte[] imageBytes = Util.toByteArray(imageInputStream);
        //绑定数据
        Context context = new Context();
        context.putVar("imageBytes", imageBytes);
        context.putVar("title", "学上统计表");
        context.putVar("list", list);
        //生成
        JxlsHelper.getInstance().processTemplate(is, os, context);
    }

    public static void main(String[] args) throws Exception {
        print();
//        print1();
    }

}
